package master

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
)

type Config struct {
	ApiPort         int `json:"apiPort"`
	ApiReadTimeOut  int `json:"apiReadTimeout"`
	ApiWriteTimeOut int `json:"apiWriteTimeout"`

	EtcdEndPoints   []string `json:"etcdEndPoints"`
	EtcdUserName    string   `json:"etcdUserName"`
	EtcdPassword    string   `json:"etcdPassword"`
	EtcdDialTimeout int      `json:"etcdDialTimeout"`
	//注意反序列化 Unmarshal 的时候，json tag里标注的字段为实际实例化struct的时候的字段值，与marshal输出的时候相反。Unmarshal是输入的，这个也困惑了一段时间。。
	WebStaticDirOne     string `json:"webStaticDirOne,"`
	WebStaticDirTwo     string `json:"webStaticDirTwo,"`
	WebStaticDirTwoT460 string `json:"webStaticDirTwoT460,"`

	MondbUrl             string `json:"mondbUrl"`
	MondbConnectTimeOut  int    `json:"mondbConnectTimeOut"`
	JobLogDBName         string `json:"jobLogDBName"`
	JobLogCollectionName string `json:"jobLogCollectionName"`
}

var (
	GlobalConfig *Config
)

func InitConfig(filename string) (err error) {
	var (
		//从文件中读取的字节数组
		content []byte
		//将字节数组反序列化的
		conf Config
	)

	//从文件中读配置文件
	if content, err = ioutil.ReadFile(filename); err != nil {
		return
	}

	//fmt.Printf("%v",string(content))
	if err = json.Unmarshal(content, &conf); err != nil {
		return
	}
	fmt.Printf("%+v", conf)
	GlobalConfig = &conf
	return
}
